#ifndef BASICREPRESENTATIONENGINE_HPP
#define BASICREPRESENTATIONENGINE_HPP

#include <windows.h>		// windows.h must be included before glut.h to avoid errors.
#include <GL/gl.h>
#include <gl/freeglut.h>
#include <vector>
#include <Box2D.h>
#include <iostream>
#include <glfont2.h>

#include "Element.hpp"
#include "GameEngine.hpp"
#include "LightElement.hpp"
#include "RepresentationEngine.hpp"
#include "Scene.hpp"

using namespace std;

class GameEngine;

class BasicRepresentationEngine : public RepresentationEngine {
private:
    static const float CAMERA_DEPTH;

    glfont::GLFont* font;

    void represent(Element* element);
    void represent(b2Body* body, float color[4]);
    void render(Scene* scene, bool swapBuffers);

public:
    BasicRepresentationEngine(GameEngine* gameEngine);
    ~BasicRepresentationEngine();

    virtual void init(Menu* menu);
    virtual void init(Scene* scene);
    virtual void render(Menu* menu, Scene* scene);
    virtual void render(Scene* scene);
};

#endif
